/**
* \file
*
* \brief User board initialization template
*
*/

#include <asf.h>
#include <board.h>
#include <conf_board.h>

void board_init(void)
{
	/* This function is meant to contain board-specific initialization code
	* for, e.g., the I/O pins. The initialization can rely on application-
	* specific board configuration, found in conf_board.h.
	*/

	//=======================================================================================================================
	// Port A
	// PA0  : Chip Select
	// PA1  : Data / Command Control Pin
	// PA2  : Reset Signal Input
	// PA3  : Read / Write Control Input Pin
	// PA4  : MCU Interface Input
	//=======================================================================================================================
	PORTA = (0<<PA7)|(0<<PA6)|(0<<PA5)|(1<<PA4)|(1<<PA3)|(1<<PA2)|(0<<PA1)|(1<<PA0);
	DDRA  = (0<<PA7)|(0<<PA6)|(0<<PA5)|(1<<PA4)|(1<<PA3)|(1<<PA2)|(1<<PA1)|(1<<PA0);
	
	//=======================================================================================================================
	// Port B
	// PB0  : EN_5V0
	// PB1  : EN_3V3_OLED
	// PB2  : EN_3V3
	// PB3  : 32kHz (OC0A)
	// PB4	: not used
	// PB5	: Sensor (MOSI)
	// PB6	: Sensor (MISO)
	// PB7	: Sensor (SCK)
	//=======================================================================================================================
	PORTB = (0<<PB7)|(0<<PB6)|(0<<PB5)|(0<<PB4)|(0<<PB3)|(1<<PB2)|(1<<PB1)|(1<<PB0);
	DDRB  = (0<<PB7)|(0<<PB6)|(0<<PB5)|(0<<PB4)|(1<<PB3)|(1<<PB2)|(1<<PB1)|(1<<PB0);
	
	//=======================================================================================================================
	// Port D
	//=======================================================================================================================
	PORTD = (0<<PD7)|(0<<PD6)|(0<<PD5)|(0<<PD4)|(0<<PD3)|(0<<PD2)|(0<<PD1)|(0<<PD0);
	DDRD  = (1<<PD7)|(1<<PD6)|(1<<PD5)|(1<<PD4)|(1<<PD3)|(1<<PD2)|(1<<PD1)|(1<<PD0);
	
	//=======================================================================================================================
	// Port C
	//=======================================================================================================================
	// PC0  : SCL
	// PC1  : SDA
	// PC2  : Button0 (PCINT18)
	// PC3  : Button1 (PCINT19)
	// PC4	: Button2 (PCINT20)
	// PC5	: Buzzer
	// PC6	: Xtal, TC2 (TOSC2)
	// PC7	: Xtal, TC2 (TOSC2)
	PORTC = (0<<PC7)|(0<<PC6)|(0<<PC5)|(1<<PC4)|(1<<PC3)|(1<<PC2)|(0<<PC1)|(0<<PC0);
	DDRC  = (0<<PC7)|(0<<PC6)|(1<<PC5)|(0<<PC4)|(0<<PC3)|(0<<PC2)|(0<<PC1)|(0<<PC0);
}
